/*************************************************************************
	> File Name: sqlite_read.c
	> Author: 
	> Mail: 
	> Created Time: 2018年08月28日 星期二 16时41分00秒
 ************************************************************************/

#include <sqlite_read.h>

static int opt = 0;

/*
 * 函数名:sqlite_read_fifo
 * 功能:读取管道中发送过来的内容,并进行相应的处理
 * 参数:int fifo_fd:打开的管道的标识符
 * 返回值:正常返回OK,错误返回ERR
 */
int sqlite_read_fifo(int fifo_fd)
{
	int ret = 0;
	int rf_id = 0;
	fifo *p = (fifo *)malloc(sizeof(fifo));
	if (NULL == p)
	{
		return ERR;
	}
	
	
	if (0 < opt)
	{
		usleep(100000);
		opt--;
		if (0 == opt)
		{
			memset(p, 0, sizeof(fifo));
			memcpy(p->buf, SKCS, strlen(SKCS));
			
			fifo_fd = open(SOCKET_FIFO, O_RDWR);
			ret = write(fifo_fd, p, sizeof(fifo));
			close(fifo_fd);
		}
	}
	memset(p, 0, sizeof(fifo));
	read(fifo_fd, p, sizeof(fifo));
	
	if (0 == memcmp(p->buf, ADMI, strlen(ADMI)))	//登录信息
	{
		admin *adm = (admin *)malloc(sizeof(admin));
		memcpy(adm, p->buf + strlen(ADMI), sizeof(admin));
		//登录信息处理函数
		admin_data(adm, p);
	}
	else if (0 == memcmp(p->buf, ZTXX, strlen(ZTXX)))	//保存采集消息线程发送过来的实时数据
	{
		server_to_client *stc = (server_to_client *)malloc(sizeof(server_to_client));
		memcpy(stc, p->buf + strlen(ZTXX), sizeof(server_to_client));
		//保存采集消息线程发送过来的实时数据信息处理函数
		save_data(stc);
	}
	else if (0 == memcmp(p->buf, LSSJ, strlen(LSSJ)))	//查询历史信息
	{
		_time *time = (_time *)malloc(sizeof(_time));
		memcpy(time, p->buf + strlen(LSSJ), sizeof(_time));
		//查询历史信息
		history_data(time);
	}
	else if (0 == memcmp(p->buf, ZCZH, strlen(ZCZH)))	//注册账号信息
	{
		admin *adm = (admin *)malloc(sizeof(admin));
		memcpy(adm, p->buf + strlen(ZCZH), sizeof(admin));
		//注册信息处理函数
		register_data(adm);
	}
	else if (0 == memcmp(p->buf, TJKH, strlen(TJKH)))	//注册账号信息
	{
		opt = 100;
	}
	else if (0 == memcmp(p->buf, MJKH, strlen(MJKH)))	//刷卡信息
	{
		//printf("sqlite_pthread----------shou dao shua ka xin xi :buf : %s\n", p->buf);
		memcpy(&rf_id, p->buf + strlen(MJKH), sizeof(int));
		if (0 == opt)
		{
			//开门信息，从数据库查询卡号是否匹配
			search_card_number(rf_id);
		}
		else
		{
			//添加门卡信息，向数据库添加门卡
			add_card_id(rf_id);
			opt = 0;
		}
	}
	
	free(p);
	return OK;
}


